package org.ch02.test03;

import org.ch02.entity.Student;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * 反射常用API：Field - 类的属性（字段）
 *
 * @author CSY
 * @date 2025 - 03 - 18
 */
public class MainTest04 {
    public static void main(String[] args) throws Exception {
        //第一：获取操作类的Class对象
        Class<Student> clazz = Student.class;

        //第二：基于Class对象，实现相关的操作 - 运行时、动态性 - 框架、工具
        //Class对象可以获取类的所有信息（对象）
        //1.实例化Student对象
        Student stu = clazz.getConstructor().newInstance();
        //2.获取要操作的具体某个字段的属性
        Field ageField = clazz.getDeclaredField("age");
        //3.设置权限 - 开放
        ageField.setAccessible(true);
        //4.初始化字段（属性） - 赋值 - stu.setAge(18)
        ageField.set(stu,18);

        //5.获取字段（属性）值
        Object age = ageField.get(stu);
        System.out.println(age);

    }
}
